﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

namespace QxFramework.Core
{
    /// <summary>
    /// 所有窗口的基类。
    /// </summary>
    public class WindowBase
    {
        /// <summary>
        /// 默认消息队列。
        /// </summary>
        protected IMessageQueue MessageQueue;



        /// <summary>
        /// 窗口初始化
        /// </summary>
        public virtual void OnInit()
        {
        }

        /// <summary>
        /// 绑定委托并注册
        /// </summary>
        public virtual void OnRegisterHandler()
        {
        }

        /// <summary>
        ///当进入该窗口时执行。
        /// </summary>
        public virtual void OnEnter(object args )
        {
        }

        /// <summary>
        /// 每次更新时执行。
        /// </summary>
        /// <param name="elapseSeconds">流逝时间，以秒为单位。</param>
        public virtual void OnUpdate(float elapseSeconds)
        {
        }

        /// <summary>
        /// 每次物理更新时执行。
        /// </summary>
        /// <param name="elapseSeconds">流逝时间，以秒为单位。</param>
        public virtual void OnFixedUpdate(float elapseSeconds)
        {
        }

        /// <summary>
        /// 每次离开这个窗口时执行。
        /// </summary>
        public virtual void OnLeave()
        {
            ReleaseDefault();
        }

        /// <summary>
        /// 程序退出时执行，在程序退出时会完成所有流程初始化。
        /// </summary>
        public virtual void OnDestroy()
        {
        }

        /// <summary>
        /// 释放默认的UI和消息队列。
        /// </summary>
        private void ReleaseDefault()
        {
            if (MessageQueue != null)
            {
                MessageManager.Instance.Dispose(MessageQueue);
            }
        }
    }
}
